package top.lyjwn.ajui.util;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.util.Log;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import top.lyjwn.utils.StringUtils;

/**
 * 本地图像缓存
 *
 * @author luoyujie
 */
public class AJBitmapCacheUtil {


    /**
     * 存入缓存文件
     * @param  path
     * @param url
     * @param bitmap      
     */
    public static void setCache(String path, String url, Bitmap bitmap) {

        if (bitmap!=null){
            File baseFile = new File(path);
            if (!baseFile.exists() || !baseFile.isDirectory()) {
                // 如果不存在 或者不是一个文件夹 就去创建文件夹
                baseFile.mkdirs();
            }
            String md5 = StringUtils.stringToMD5(url);
            // 生成图片对应的文件
            File bitemapFile = new File(baseFile, md5);
            try {
                // 写入流
                FileOutputStream fos = new FileOutputStream(bitemapFile);
                // 压缩 参1 格式 参2 100就是不压缩 参3写入流
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
                //FileNotFoundException
            } catch (Exception e) {
                Log.e("本地缓存图片 失败",e.getMessage());
                e.printStackTrace();
            }
        }

    }


    /**
     * 从本地取出图片
     *      
     * @param path
     * @param url
     * @return      
     */

    public static Bitmap getCache(String path,String url) {
        Bitmap bitmap = null;
        File baseFile = new File(path);
        if (!baseFile.exists() || !baseFile.isDirectory()) {
            // 如果不存在 直接返回
            return bitmap;
        }
        // 用url的md5值作为文件的名字
        String md5 = StringUtils.stringToMD5(url);
        // 生成图片对应的文件
        File bitemapFile = new File(baseFile, md5);
        if (bitemapFile.exists()) {
            try {
                // 文件转bitmap
                bitmap = BitmapFactory.decodeStream(new FileInputStream(
                        bitemapFile));
            } catch (FileNotFoundException e) {
                Log.e("本地读取图片 失败",e.getMessage());
                e.printStackTrace();
            }
        }
        return bitmap;

    }

}
